Integrating a product model into a user supplied image

ABSTRACT

Techniques for integrating a product model into a user supplied image are presented herein. A method is disclosed that includes receiving an image of a user space from a user, receiving one or more definitions that describe the user space, retrieving, based on search terms provided by the user, one or more items available at a networked marketplace that fit within the definitions of the user space, and generating a composite image by overlaying an image of one of the items on the image of the user space. The method further scales the image of the item according to the definition of the user space and the physical dimensions of the item, and depicts virtual guidelines indicating a current scale of the image of the item.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. Pat. Application No.14/580,281 by Ravindra, “Integrating a Product Model Into a UserSupplied Image,” filed Dec. 23, 2014, assigned to the assignee hereof,and expressly incorporated by reference herein.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to the technicalfield of virtual marketplaces and more specifically to integrating aproduct model into a user supplied image.

BACKGROUND

As technology advances, more products are available for purchaseelectronically. Even large products, such as, refrigerators, couches, orother appliances can be purchased over a network. However, it may bedifficult for a consumer to determine how such a large product will lookin their home without temporarily putting the product in place.Physically testing the looks of a large or heavy item in a user spacetypically demands significant effort on the part of the consumer.

A consumer may not be willing to risk purchasing an expensive itemwithout temporary placement. Also, a seller of expensive items may notbe willing to allow a consumer to temporary place the item in the userspace without purchase. To address this problem, some systems depict animage of the item overlaid on a background image; however, determining acorrect scale of the product without user intervention is morechallenging.

Furthermore, searching through lists of available products to determinewhether the product will fit a given user space can be an arduous task.For example, when looking for a refrigerator, a user needs to examineeach dimensions of potential purchase to determine whether therefrigerator fits within a user space.

In another scenario, purchasing a used product may make it difficult todetermine accurate dimensions because an unsophisticated seller may notprovide accurate dimensions.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings.

FIG. 1 is a block diagram illustrating a computing device forintegrating a product model into a user supplied image, in accordancewith an example embodiment.

FIG. 2 is a block diagram illustrating a system for integrating aproduct model into a user supplied image in accordance with an exampleembodiment.

FIG. 3 is an illustration depicting a user supplied image in accordancewith an example embodiment.

FIG. 4 is an illustration depicting a user supplied image in accordancewith an example embodiment.

FIG. 5 is an illustration depicting a block diagram illustrating anexample embodiment of the present disclosure.

FIG. 6 is an illustration depicting a composite image in accordance withone example embodiment of the present disclosure.

FIG. 7 is a block diagram illustrating search results in accordance withanother example embodiment.

FIG. 8 is a flow diagram illustrating a method in accordance with anexample embodiment.

FIG. 9 is a flow diagram illustrating a method in accordance with anexample embodiment.

FIG. 10 is a flow diagram illustrating a method in accordance with anexample embodiment.

FIG. 11 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium and perform any one or more of the methodologiesdiscussed herein.

FIG. 12 is a block diagram illustrating components of a mobile device,according to some example embodiments.

DETAILED DESCRIPTION

The description that follows includes illustrative systems, methods,techniques, instruction sequences, and computing machine programproducts that embody illustrative embodiments. In the followingdescription, for purposes of explanation, numerous specific details areset forth in order to provide an understanding of various embodiments ofthe inventive subject matter. It will be evident, however, to thoseskilled in the art that embodiments of the inventive subject matter maybe practiced without these specific details. In general, well-knowninstruction instances, protocols, structures, and techniques have notbeen shown in detail.

Example systems and methods for integrating a product model into a usersupplied image are disclosed. In order to address problems associatedwith determining how a large or heavy item will look in a user space, asystem as disclosed herein, receives an image of a user space and aphysical definition of the user space from the user. The system may thenquery a networked marketplace and restrict search results to items thatphysically fit within the defined user space.

The system may further generate a composite image by overlaying an imageof the product into the user space. In order to ensure an accuraterepresentation of the product, the system scales the image of theproduct according to the physical dimensions of the user space and thephysical dimensions of the product. Additionally, the system may depictvirtual guidelines for the image of the product to provide the user withaccurate scaling information.

FIG. 1 is a block diagram illustrating a computing device 100 forintegrating a product model into a user supplied image, in accordancewith an example embodiment. According to one example embodiment, thecomputing device 100 includes an input module 120, a query module 140,and a generation module 160. In some embodiments, the computing device100 is a mobile computing device for the user. In other embodiments, thecomputing device 100 is a remote server as will be described insubsequent paragraphs.

In one example embodiment, the input module 120 is configured to receivean image of a user space. An image of a user space, as described herein,includes an image of a physical space where a product will be placed. Inone example, a user may desire a new refrigerator and may remove anexisting refrigerator. The user space is the physical location where thenew refrigerator will be placed. In another example, a user may desireto purchase a couch. The user may take a picture of the location wherethe couch will be placed and the input module 120 receives this image ofthe user space (where the couch will be placed).

In one example embodiment where the input module 120 operates as part ofa mobile computing device, the input module 120 receives the image of auser space from a camera included in the mobile computing device. Inanother example embodiment where the input module 120 operates as partof a remote server, the input module 120 receives the image of the userspace from a user’s mobile computing device.

In another example embodiment, the input module 120 receives adefinition of the user space. A definition of the user space may includeany set of values that define a physical area. The definition of theuser space may include two-dimensional values or three dimensionalvalues. Furthermore, the definition may include an offset from an edgeof the user image. In this way, the definition may specifically identifyan area of the user image and indicate a physical area of thedefinition. The input module 120 may receive the definition of the userspace from input at a mobile computing device for the user as will befurther described.

In one example, where the device 100 is a user’s mobile computingdevice, the input module 120 interacts with the user to receive thedefinition of the user space via one or more input devices. In anotherexample, where the device 100 operates as a server, the input module 120may receive the definition from the user’s mobile computing device.

In one example, the definition of the user space defines a twodimensional area on the image from the user. A user interface may beconfigured to allow a user to move and/or stretch a two dimensionalshape to define the user space. For example, a user may select a squareand may move the square to a position to define the user space. The usermay also stretch and/or resize the square as desired. Furthermore, theinput module 120 may receive physical measurements for the square suchthat the input module 120 may determine a physical area of the indicateduser space.

In another example, the user may select a circle, ellipse, triangle,trapezoid, or any other polygon. Therefore, in certain exampleembodiments, the user may configure a set of vectors that define apolygon to indicate the user space.

In another example embodiment, the definition of the user space definesa three dimensional volume. The user interface may be configured toallow a user to move and/or stretch a three dimensional shape to definethe user space. For example, the user may select a cube and may moveand/or resize the cube to define the user space. Of course, other threedimensional shapes may be used and this disclosure is not limited inthis regard.

In another example embodiment, the definition of the user space includethree dimensions and less than three dimensions are hard limits. Forexample, an X axis and a Y axis may be hard limits. A hard limit, asdescribed herein, includes a boundary to the user space that may not beexceeded. In this embodiment, at least one of the axis may not include alimit or boundary. For example, a Z axis in a three dimensionaldefinition may not include a limit and the definition of the user space.Therefore, in one example, the user space may include a column of spacewith boundaries in an X and a Y direction, but no limits in a Zdirection as one skilled in the art may appreciate.

In another example embodiment, the definition of the user space includesa soft limit for at least one of the boundaries. A soft limit, asdescribed herein, may include a range of limits. For example, where thedefinition defines a two dimensional shape (e.g. a rectangle, or other 4sided polygon), the definition may include a hard limit for onedimension (e.g. an X axis), and a soft limit for another dimensions(e.g. a Y axis). The definition may therefore include, a user spacewhere the X dimension is a hard limit and cannot be exceeded, but the Ydimension includes a range of values. For example, the user space thatis a rectangle may have a X limit of 32 inches, and a Y limit of 18 to40 inches. Of course, other values may be used and this disclosure isnot limited in this regard.

In one specific example, the user space may be for a refrigerator andthe definition of the user space may include hard limits for a width anda depth, and a soft limit for the height. Therefore, only a refrigeratorthat fits the width and depth may fit the definition of the user space,however, the height of the refrigerator may be a range of heights, basedat least in part on the availability of space above the user space.

In one example embodiment, the device 100 includes the query module 140.The query module 140 may be configured to receive search terms from theuser and the retrieve one or more items that are available for purchase.The query module 140 may query a database of available items, anetworked marketplace, a retail system, or any other supplier of goodsand/or services. In one example embodiment, the query module 140 limitssearch results to products that fit within the definition of the userspace.

In one example, the definition includes a square on the user image, andthe query module 140 filters search results to item that would fitwithin the square as one skilled in the art may appreciate. In anotherexample, the definition includes a circle and the query module 140filters search results to items that would fit within the circle. Ofcourse, this disclosure is not limited in this regard and the querymodule 140 may determine whether an item fits within the definition ofthe user space based on the dimensions of the user space and thephysical dimensions of the product.

In one example embodiment, the query module 140 may consider twodimensions of the product. Although a product model may include threedimensions, the query module 140 may determine a smallest twodimensional plane that could contain any two dimensional plane of theproduct model. Therefore, the query module 140 may determine whether athree dimensional model would fit within a two-dimensional definition,regardless of a rotation of the product model.

In another example embodiment, the query module 140 may determinewhether a product fits within a definition of the user space bydetermining whether a two dimensional view of the product model issubstantially similar to a size of the definition of the user space. Asdescribed herein, substantially similar means that the size of theproduct is within a threshold percentage of the size of the user space.

In one example, where a threshold percentage is 5%, the product is 42inches by 42 inches, and the definition of the user space is 41 inchesby 41 inches. In this example, the area of the definition of the userspace is 1764 square inches and the area of one view of the product isproduct is 1681. Because a percentage difference in area between 1764and 1681 is less than 5%, the query module 140 may determine that a sizeof the product is substantially similar to the definition of the userspace.

In another example embodiment, substantially similar may to one or moredimensions of the user space. For example, for a two dimensionaldefinition of a user space, one dimension may include a hard limit, andthe other dimension may be based on substantial similarity. For example,a X axis may include a hard limit with little to no variationacceptable, while the other Y axis may be substantially similar, or maytolerate a 4% variation, or the like. Of course, other values may beused and this disclosure is not limited in this regard.

In another example embodiment, the device 100 includes the generationmodule 160 configured to generate a composite image of the product modelwith the image of the user space. According to one embodiment, thegeneration module 160 overlays an image of the product on the imagecentered to fit within the user space.

Furthermore, the generation module 160 may scale the image of theproduct according to the definition of the user space and the physicaldimensions of the item. The generation module 160 may determine aphysical scale of the user image based on the location of the definitionof the user space, and physical measurements of the definition of theuser space.

For example, where the user space is 50 inches wide, and the product is50 inches wide, the generation module 160 may modify a scale of theimage of the product to be consistent with the width of the user space.In another example, where the user space is 50 inches wide, and theproduct is 40 inches wide, the generation module 160 may modify a scaleof the image of the product to be 80% of the width of the user space.Therefore, using physical dimensions of the user space and thedimensions of the product, the generation module 160 may determine aphysically correct scale for the product model.

In another example embodiment, the generation module 160 may adjust arotation of the product model based on a rotation of the device 100. Thedevice 100 may include sensors to determine an orientation of the systemand the generation module 160 may adjust a rotation of the product modelto match the orientation of the device 100.

The generation module 160 may depict the definition of the user spaceusing different colors, patterns, line patterns, shaded areas, or thelike. Therefore, a user viewing the composite image will be able to seedifferences between the user space and the product dimensions.

In another example embodiment, the generation module 160 may transmitthe composite image to a remote device. The generation module 160 maytransmit the composite image wirelessly, over a network, via a remoteservice, or other, or the like. Of course, one skilled in the art mayappreciate many different ways to transmit an image and this disclosureis not limited in this regard.

FIG. 2 is a block diagram illustrating a system 200 for integrating aproduct model into a user supplied image in accordance with an exampleembodiment. According to one example embodiment, the system 200 includesa camera 220, the input module 120, the query module 140, the generationmodule 160, an interface module 180, and a display 240. The input module120, the query module 140, and the generation module 160 may or may notbe substantially similar to those modules depicted in FIG. 1 . Thesystem 200 may communicate with a networked marketplace 260 as describedherein, as well as a three-dimensional (3D) model database 250.

In one example embodiment, the input module 120 may receive the image ofthe user space from the camera 220. The camera 220 may include any imagecapturing device as one skilled in the art may appreciate. The camera220 may be a video camera and the input module 120 may extract a singleframe as the image of the user space. Also, the camera 220 may be astill shot camera and the input module 120 may receive the shot of theuser space.

In another example embodiment, the interface module 180 may beconfigured to provide an interface to allow the user to manipulate theimage of the product. As one skilled in the art may appreciate, theinterface module 180 may provide controls to move the product image,scale the product image, rotate the product image, or modify the productimage in some other way

In one example embodiment, the interface module 180 may be configured toprovide graphical user interface controls to allow a user to zoom in onthe image of the product. In response to the user zooming in on theproduct, the generation module 160 may replace the image of the productwith a higher resolution version. In one non-limiting example, inresponse to the user zooming in such that less than ½ of the image ofthe product is viewable by the user, the generation module 160 may loada higher resolution image of the product. Therefore, the user may zoomin to the product image and view details of the product based on thehigh resolution product image. Furthermore, the user may compare detailsof the product with features and/or aspects of the user image.

In another example embodiment, the query module 140 may communicate witha networked marketplace 260 to retrieve a list of products (based onsearch terms provided by the user) that fit within the definition of theuser space. A networked marketplace, as described herein, includes aremote system for buying and/or selling products or services. At anetworked marketplace, a seller may submit products and/or services tosell, and a buyer may purchase available products and/or services. Ofcourse, one skilled in the art may recognize other configurations of anetworked marketplace and this disclosure is not limited in this regard.In one example embodiment, the networked marketplace may receive one ormore search terms and may return a list of available items.

In one example embodiment, in order to determine whether items receivedfrom the networked marketplace 260 fit within the user space, the querymodule 140 may request a 3D model from the 3D model database 250. Forexample, in response to the returned item not including a 3D model, thequery module 140 may request a model based on a brand of the item, amodel number of the item, or other identifying characteristic.Therefore, although a user may provide inaccurate dimensions for theitem, the query module 140 may nonetheless determine accurate physicaldimensions.

FIG. 3 is an illustration depicting a user supplied image 300 inaccordance with an example embodiment. According to this example, theuser may take a picture of a kitchen having removed the refrigerator.The user space 320 is the space where a new refrigerator will be placed.

A user may define the user space 320 by placing and adjusting adefinition 310 using controls provided by the interface module 180. Thedefinition may include any shape as one skilled in the art mayappreciate. The user may move the definition 310 to enclose the userspace 320. The generation module 160 may add the definition 310 to thecomposite image.

The query module 140 may receive one or more search terms from the userand may retrieve items that are available from a networked marketplace260. According to this example, the query module 140 may search for arefrigerator and may limit search results to refrigerators that fitwithin the definition 310 of the user space 320.

In one example, the query module 140 may include dimensions of the userspace 320 in the query to the networked marketplace 260 and thenetworked marketplace 260 may limit search results to refrigerators thatfit within the user space 320. In another example, the query module 140may not include dimensions of the user space 320 and the query module140 may filter search results to restrict refrigerators to those thatwill fit within the user space 320.

In another example embodiment, the generation module 160 may generate,in response to a selection of one of the refrigerators, a compositeimage of the selected refrigerator in the user space 320. Based on thedefinition 310 of the user space 320 and the physical dimensions of theselected refrigerator, the generation module 160 may scale the image ofthe selected refrigerator so that the image of the selected refrigeratoraccurately represents the physical properties of the selectedrefrigerator.

FIG. 4 is an illustration depicting a user supplied image 410 inaccordance with an example embodiment. The user image 410 may include animage of a room in the user’s home, or another location. As previouslydescribed, the user may provide a definition 420 of a user space.

In this specific example 400, the user space is an area on a wall of theroom. The user may have selected a shape (e.g. a square) and using oneor more controls provided by the interface module 180, may provide adefinition 420 of the user space. The input module 120 receives theimage from the user and receives the definition 420 of the user space.

The query module 140 may receive one or more search terms from the userand may retrieve items that are available from a networked marketplace260. According to this example, the query module 140 may search for“art,” “portrait”, “painting,” or other, or the like. The query module140 may limit search results to items that fit within the definition 420of the user space.

In one example, the query module 140 may include the definition 420 ofthe user space in the query to the networked marketplace 260 and thenetworked marketplace 260 may limit search results to items that fitwithin the definition 420. In another example, the query module 140 maynot include the definition 420 of the user space and the query module140 may filter search results to restrict results to those that will fitwithin the definition 420 of the user space.

FIG. 5 is an illustration depicting a block diagram illustrating anexample embodiment of the present disclosure. In this exampleembodiment, the camera 220 may capture an image 510 of a user space. Theinput module 120 may receive a definition 520 that is an oval of theuser space as previously described.

In one example embodiment, the query module 140 may receive search termsfrom the user including a “table.” The query module 140 may query anetworked marketplace 260 for tables. As previously described, the querymodule 140 may further include the definition 520. Based on resultsreceived from the networked marketplace 260, the query module 140 mayretrieve a 3D model of each of the returned items.

In one example, the returned items include the table 530, and the querymodule 140 retrieves a 3D model of the table 530. The interface module180 may present a control 534 for a user to rotate the table 530 until adesired orientation is achieved.

In another example embodiment, the generation module 160 may generate,in response to a selection of one of the items, a composite image 550 ofthe selected item in the user space 320. Based on the definition 520 ofthe user space 320 and the physical dimensions of the selected itemdetermined by the 3D model of the table 530, the generation module 160may scale the image of the selected item so that the image of theproduct accurately represents the physical dimensions of the selecteditem.

Furthermore, the interface module 180 may provide virtual guidelines 552for the user. The virtual guidelines 552 indicate the scale determinedby the generation module 160. Additionally, the virtual guidelines 552may be manipulated by the user to alter the scale of the image of theproduct. In response to the user changing the scale of the product to beinconsistent with the determined scale, the interface module 180 maynotify the user as one skilled in the art may appreciate.

In one example, the interface module 180 includes a vertical virtualguideline 552 a for the user to adjust a vertical scale, and ahorizontal virtual guideline 552 b to adjust a horizontal scale of theimage of the product. In another example, the user may translate theimage deeper into the user image 510 and the generation module 160 mayshrink a scale of the item of the product accordingly. In this example,because of manual changes by the user, the scale may not be consistentwith the user space 520. However, the interface module 180 would notifythe user of this fact. Therefore, the user may still check how the itemmay look in other locations in the user image 510. Of course, theinterface module 180 may provide other virtual guidelines 552 and thisdisclosure is not limited in this regard.

FIG. 6 is an illustration depicting a composite image 600 in accordancewith one example embodiment of the present disclosure. As previouslydescribed, the generation module 160 may generate the composite image600 by overlaying an image of the product onto a user provided image ofa user space.

Furthermore, the interface module 180 may provide one or more controlsfor the user to manipulate the image of the product. In one example, theuser interface module 180 provides a rotation control 622 allowing auser to rotate the image of the product. The interface module 180 mayalso provide virtual guidelines 626 to indicate the determined scale ofthe image of the product. The interface module 180 may receive changesfrom the user using the virtual guidelines.

In another example embodiment, the interface module 180 may providebuttons 624 to receive a request to change the image of the product to adifferent item. For example, the query module 140 may return a list ofitems that may fit within the user space. In response to the userselecting button 624 a, the generation module 160 may overlay theproduct image for an earlier item in the list of returned items. Inresponse to the user selecting button 624 b, the generation module 160may overlay the product image for a later item in the list of returneditems.

In one example embodiment, after the user manipulates a rotation and/orscale of the image of the product, the user may select button 624 a orbutton 624 b. In response, the generation module 160 may change theimage of the product to a different item and may orient the differentitem according to an orientation of the initial item. Therefore, as auser changes a position and/or orientation of one item, the user may notneed to repeat the changes. Therefore, the device 100 allows a user toquickly view many different items that are correctly scaled and orientedin a user supplied image and according to a definition of a user spacein the user image.

In another example embodiment, the interface module 180 may provide acontrol 628 to change a light source. As one skilled in the art mayappreciate, the image of the product may be based on a 3D model andshading and/or textures of the 3D model may change based on a lightsource. Therefore, as a user changes properties of the light source, thegeneration module 160 may update the image of the product accordingly.In certain examples, the properties of the light source includelocation, brightness, color, spread, or the like, as one skilled in theart may appreciate.

In another example embodiment, the interface module 180 may provide abutton for the user to share the composite image 600 with another user.In response to the user pressing the button 630, the generation module160 may save the composite image 600 to a user specified location,transmit the composite image 600 to another user, post the compositeimage 600 to a social media server, or to another location as oneskilled in the art may appreciate.

FIG. 7 is a block diagram illustrating search results 700 in accordancewith another example embodiment. According to one example embodiment,the query module 140 may retrieve a list 720 of products and/or itemsthat fit within a user definition of a user space.

In one example embodiment, the generation module 160 may generaterespective composite images for each of the items returned in the list720 of items. The composite images may be displayed in the list 720 ofsearch results. Accordingly, a user may quickly see many items that fitwithin the user space and may quickly determine how the items look inthe user space. Presenting a list 720 of items in this way allows a userto more quickly determine which product and/or item to purchase.

FIG. 8 is a flow diagram illustrating a method 800 in accordance with anexample embodiment. Operations in the method 800 may be performed by thedevice 100, using modules described above with respect to FIGS. 1 and 2. As shown in FIG. 8 , the method 800 includes operations 810, 812, 814,and 816.

According to one example embodiment, the method 800 may begin and atoperation 810 the input module 120 may receive an image of a user spacefrom a user. The method 800 may continue at operation 812 and the inputmodule 120 may receive a definition that describes the user space. Thedefinition may include one or more vectors that describe a boundary ofthe user space, a shape that encloses the user space, or the like as oneskilled in the art may appreciate.

The method 800 may continue at operation 814 and the query module 140may retrieve, based on search terms provided by the user, one or moreitems available at a networked marketplace 260 that fit within thedefinition of the user space. The method may continue at operation 816and the generation module 160 may generate a composite image byoverlaying an image of one of the items on the image of the user space.The generation module 160 may scale the image of the item according tothe definition of the user space and the physical dimensions of theitem. Furthermore, the generation module 160 may depict virtualguidelines 626 indicating a current scale of the image of the item.

FIG. 9 is a flow diagram illustrating a method 900 in accordance with anexample embodiment. Operations in the method 900 may be performed by thedevice 100, using modules described above with respect to FIGS. 1 and 2. As shown in FIG. 9 , the method 900 includes operations 910, 912, 914,916, 918, 920, and 922.

According to one example embodiment, the method 900 may begin and atoperation 910 the input module 120 may receive an image of a user spacefrom a user. The method 900 may continue at operation 912 and the inputmodule 120 may receive a definition that describes the user space aspreviously described. The method 900 may continue at operation 914 andthe query module 140 may retrieve, based on search terms provided by theuser, one or more items available at a networked marketplace that fitwithin the definition of the user space.

The method 900 may continue at operation 916 and the generation module160 may generate a composite image by overlaying an image of one of theitems on the image of the user space as described herein. The method 900may continue at operation 918 and the interface module 180 may provide auser interface to allow a user to manipulate the image of the item byallowing the user to change a scale of the product image, a position ofthe product image, and/or an orientation of the product image.

The method 900 may continue at operation 920 and the interface module180 may receive a request to change the product image. In one example,the change to the product image includes a change to a light source. Inanother example, the change to the product image includes changing theproduct to a different product. The method 900 may continue at operation922 and the generation module 160 may update the composite image basedon the change.

FIG. 10 is a flow diagram illustrating a method in accordance with anexample embodiment. Operations in the method 1000 may be performed bythe device 100, using modules described above with respect to FIGS. 1and 2 . As shown in FIG. 10 , the method 100 includes operations 1010,1012, 1014, 1016, 1018, 1020, and 1022.

According to one example embodiment, the method 1000 may begin and atoperation 1010 the input module 120 may receive an image of a user spacefrom a user. The method 1000 may continue at operation 1012 and theinput module 120 may receive a definition that describes the user spaceas previously described. The method 1000 may continue at operation 1014and the query module 140 may retrieve, based on search terms provided bythe user, one or more items available at a networked marketplace thatfit within the definition of the user space.

The method 1000 may continue at operation 1016 and the generation module160 may generate composite images for each of the available items. Themethod may continue at operation 1018 and the interface module 180 maydisplay the composite images along with the available items in a list.The method 1000 may continue at operation 1020 and the user interfacemodule 180 may receive a user selection of one of the available items inthe list 720. The method 1000 may continue and at operation 1022, thegeneration module 160 may share the composite image for the selecteditem.

FIG. 11 is a block diagram illustrating components of a machine 1100,according to some example embodiments, able to read instructions 1124from a machine-readable medium 1122 (e.g., a non-transitorymachine-readable medium, a machine-readable storage medium, acomputer-readable storage medium, or any suitable combination thereof)and perform any one or more of the methodologies discussed herein, inwhole or in part. Specifically, FIG. 11 shows the machine 1100 in theexample form of a computer system (e.g., a computer) within which theinstructions 1124 (e.g., software, a program, an application, an applet,an app, or other executable code) for causing the machine 1100 toperform any one or more of the methodologies discussed herein may beexecuted, in whole or in part.

In alternative embodiments, the machine 1100 may operate as a standalonedevice or may be connected (e.g., networked) to other machines. In anetworked deployment, the machine 1100 may operate in the capacity of aserver machine or a client machine in a server-client networkenvironment, or as a peer machine in a distributed (e.g., peer-to-peer)network environment. The machine 1100 may be a server computer, a clientcomputer, a personal computer (PC), a tablet computer, a laptopcomputer, a netbook, a cellular telephone, a smartphone, a set-top box(STB), a personal digital assistant (PDA), a web appliance, a networkrouter, a network switch, a network bridge, or any machine capable ofexecuting the instructions 1124, sequentially or otherwise, that specifyactions to be taken by that machine. Further, while only a singlemachine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executethe instructions 1124 to perform all or part of any one or more of themethodologies discussed herein.

The machine 1100 includes a processor 1102 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), or any suitable combinationthereof), a main memory 1104, and a static memory 1106, which areconfigured to communicate with each other via a bus 1108. The processor1102 may contain microcircuits that are configurable, temporarily orpermanently, by some or all of the instructions 1124 such that theprocessor 1102 is configurable to perform any one or more of themethodologies described herein, in whole or in part. For example, a setof one or more microcircuits of the processor 1102 may be configurableto execute one or more modules (e.g., software modules) describedherein.

The machine 1100 may further include a graphics display 1110 (e.g., aplasma display panel (PDP), a light emitting diode (LED) display, aliquid crystal display (LCD), a projector, a cathode ray tube (CRT), orany other display capable of displaying graphics or video). Thegeneration module 160 may display the composite image via the graphicsdisplay 1110. The machine 1100 may also include an alphanumeric inputdevice 1112 (e.g., a keyboard or keypad), a cursor control device 1114(e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, aneye tracking device, or other pointing instrument), a storage unit 1116,an audio generation device 1118 (e.g., a sound card, an amplifier, aspeaker, a headphone jack, or any suitable combination thereof), and anetwork interface device 1120. The interface module 180 may receive anyof the user indication described herein via the alphanumeric inputdevice 1112.

The storage unit 1116 includes the machine-readable medium 1122 (e.g., atangible and non-transitory machine-readable storage medium) on whichare stored the instructions 1124 embodying any one or more of themethodologies or functions described herein. The instructions 1124 mayalso reside, completely or at least partially, within the main memory1104, within the processor 1102 (e.g., within the processor’s cachememory), or both, before or during execution thereof by the machine1100. Accordingly, the main memory 1104 and the processor 1102 may beconsidered machine-readable media (e.g., tangible and non-transitorymachine-readable media). The instructions 1124 may be transmitted orreceived over the network 190 via the network interface device 1120. Forexample, the network interface device 1120 may communicate theinstructions 1124 using any one or more transfer protocols (e.g.,hypertext transfer protocol (HTTP)). In certain embodiments, the inputmodule 120 may receive a user image through the network interface device1120. In another embodiment, the query module 140 may query a remote 3Dmodel database 250 over the network 190.

In some example embodiments, the machine 1100 may be a portablecomputing device, such as a smart phone or tablet computer, and have oneor more additional input components 1130 (e.g., sensors or gauges).Examples of such input components 1130 include an image input component(e.g., one or more cameras), an audio input component (e.g., amicrophone), a direction input component (e.g., a compass), a locationinput component (e.g., a global positioning system (GPS) receiver), anorientation component (e.g., a gyroscope), a motion detection component(e.g., one or more accelerometers), an altitude detection component(e.g., an altimeter), and a gas detection component (e.g., a gassensor). Inputs harvested by any one or more of these input componentsmay be accessible and available for use by any of the modules describedherein.

FIG. 12 is a block diagram illustrating components of a mobile device,according to some example embodiments. The mobile device 1200 mayinclude a processor 1202. The processor 1202 may be any of a variety ofdifferent types of commercially available processors suitable for mobiledevices (for example, an XScale architecture microprocessor, amicroprocessor without interlocked pipeline stages (MIPS) architectureprocessor, or another type of processor 1202). A memory 1204, such as arandom access memory (RAM), a flash memory, or other type of memory, istypically accessible to the processor 1202. The memory 1204 may beadapted to store an operating system (OS) 1206, as well as applications1208, such as a mobile location-enabled application that may providelocation-based services (LBSs) to a user. The processor 1202 may becoupled, either directly or via appropriate intermediary hardware, to adisplay 1210 and to one or more input/output (I/O) devices 1212, such asa keypad, a touch panel sensor, a microphone, and the like. Similarly,in some embodiments, the processor 1202 may be coupled to a transceiver1214 that interfaces with an antenna 1216. The transceiver 1214 may beconfigured to both transmit and receive cellular network signals,wireless data signals, or other types of signals via the antenna 1216,depending on the nature of the mobile device 1200. Further, in someconfigurations, a GPS receiver 1218 may also make use of the antenna1216 to receive GPS signals.

In one embodiment, the device 100 may be embodied in a mobile device asdescribed herein. In one example, a mobile device may include a camera220, a display 240, the input module 120, the query module 140, and thegeneration module 160. In one example, a consumer may hold the mobiledevice in a position such that the camera 220 may capture an image of auser space.

As used herein, the term “memory” refers to a machine-readable mediumable to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 1122 is shown in an example embodiment to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storeinstructions. The term “machine-readable medium” shall also be taken toinclude any medium, or combination of multiple media, that is capable ofstoring the instructions 1124 for execution by the machine 1100, suchthat the instructions 1124, when executed by one or more processors ofthe machine 1100 (e.g., processor 1102), cause the machine 1100 toperform any one or more of the methodologies described herein, in wholeor in part. Accordingly, a “machine-readable medium” refers to a singlestorage apparatus or device, as well as cloud-based storage systems orstorage networks that include multiple storage apparatus or devices. Theterm “machine-readable medium” shall accordingly be taken to include,but not be limited to, one or more tangible (e.g., non-transitory) datarepositories in the form of a solid-state memory, an optical medium, amagnetic medium, or any suitable combination thereof.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute softwaremodules (e.g., code stored or otherwise embodied on a machine-readablemedium or in a transmission medium), hardware modules, or any suitablecombination thereof. A “hardware module” is a tangible (e.g.,non-transitory) unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an ASIC. A hardware module may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwaremodule may include software encompassed within a general-purposeprocessor or other programmable processor. It will be appreciated thatthe decision to implement a hardware module mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) may be driven by cost and timeconsiderations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, and such a tangible entity may bephysically constructed, permanently configured (e.g., hardwired), ortemporarily configured (e.g., programmed) to operate in a certain manneror to perform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a general-purpose processor configured by software tobecome a special-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware modules) at different times. Software(e.g., a software module) may accordingly configure one or moreprocessors, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented modules. As used herein,“processor-implemented module” refers to a hardware module in which thehardware includes one or more processors. Moreover, the one or moreprocessors may also operate to support performance of the relevantoperations in a “cloud computing” environment or as a “software as aservice” (SaaS). For example, at least some of the operations may beperformed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication program interface (API)).

The performance of certain operations may be distributed among the oneor more processors, not only residing within a single machine, butdeployed across a number of machines. In some example embodiments, theone or more processors or processor-implemented modules may be locatedin a single geographic location (e.g., within a home environment, anoffice environment, or a server farm). In other example embodiments, theone or more processors or processor-implemented modules may bedistributed across a number of geographic locations.

Some portions of the subject matter discussed herein may be presented interms of algorithms or symbolic representations of operations on datastored as bits or binary digital signals within a machine memory (e.g.,a computer memory). Such algorithms or symbolic representations areexamples of techniques used by those of ordinary skill in the dataprocessing arts to convey the substance of their work to others skilledin the art. As used herein, an “algorithm” is a self-consistent sequenceof operations or similar processing leading to a desired result. In thiscontext, algorithms and operations involve physical manipulation ofphysical quantities. Typically, but not necessarily, such quantities maytake the form of electrical, magnetic, or optical signals capable ofbeing stored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non exclusive “or,” unless specificallystated otherwise.

What is claimed is:
 1. A system, comprising: one or more processors; anda memory storing instructions which, when executed by the one or moreprocessors, cause the system to perform operations comprising: receivingan image depicting a physical space and an indication of one or morephysical dimensions of the physical space; receiving an indication of atleast a first item available from a networked marketplace and a seconditem available from the networked marketplace, wherein the first itemand the second item each have respective sizes comprising physicaldimensions that are within a threshold of the one or more physicaldimensions of the physical space; transmitting, to a user device, afirst composite image that overlays a first image of the first itemwithin the image depicting the physical space, wherein the firstcomposite image is scaled according to the one or more physicaldimensions of the physical space and one or more physical dimensions ofthe first item; and transmitting, to the user device, a second compositeimage that overlays a second image of the second item within the imagedepicting the physical space, wherein the second composite image isscaled according to the one or more physical dimensions of the physicalspace and one or more physical dimensions of the second item.
 2. Thesystem of claim 1, wherein the instructions to receive the indication,when executed by the one or more processors, further cause the system toperform operations comprising: receiving one or more vectors that definea boundary of the physical space, a shape that encloses the physicalspace, or both, wherein the first composite image is scaled based atleast in part on receiving the one or more vectors that define theboundary of the physical space, the shape that encloses the physicalspace, or both.
 3. The system of claim 1, wherein the instructions toreceive the indication, when executed by the one or more processors,further cause the system to perform operations comprising: receiving,from the user device, a query for one or more items available at thenetworked marketplace.
 4. The system of claim 1, wherein theinstructions, when executed by the one or more processors, cause thesystem to perform operations comprising: generating the first compositeimage that overlays the first image of the first item within the imagedepicting the physical space based at least in part on receiving theindication of at least the first item available at the networkedmarketplace and the second item available at the networked marketplace.5. The system of claim 4, wherein the instructions to generate the firstcomposite image, when executed by the one or more processors, furthercause the system to perform operations comprising: scaling the firstcomposite image according to the one or more physical dimensions of thephysical space and one or more physical dimensions of the first item. 6.The system of claim 1, wherein the instructions, when executed by theone or more processors, cause the system to perform operationscomprising: receiving, from the user device, a first request to changeone or more of a scale, a position, or an orientation of the firstcomposite image; and adjusting one or more of the scale, the position,or the orientation of the first composite image based at least in parton receiving the first request, wherein transmitting the first compositeimage is based at least in part on adjusting one or more of the scale,the position, and the orientation of the first composite image.
 7. Thesystem of claim 1, wherein the instructions, when executed by the one ormore processors, cause the system to perform operations comprising:receiving, from the user device, a second request to change the firstimage of the first item based at least in part on transmitting the firstcomposite image; changing the first image of the first item based atleast in part on receiving the second request; and transmitting, to theuser device, a third composite image that overlays a third image of athird item within the image depicting the physical space based at leastin part on changing the first image of the first item.
 8. The system ofclaim 7, wherein the second request comprises a request to change alight source of the first image of the first item.
 9. A method,comprising: receiving, by one or more processors, an image depicting aphysical space and an indication of one or more physical dimensions ofthe physical space; receiving, by the one or more processors, anindication of at least a first item available from a networkedmarketplace and a second item available from the networked marketplace,wherein the first item and the second item each have respective sizescomprising physical dimensions that are within a threshold of the one ormore physical dimensions of the physical space; transmitting, to a userdevice, a first composite image that overlays a first image of the firstitem within the image depicting the physical space, wherein the firstcomposite image is scaled according to the one or more physicaldimensions of the physical space and one or more physical dimensions ofthe first item; and transmitting, to the user device, a second compositeimage that overlays a second image of the second item within the imagedepicting the physical space, wherein the second composite image isscaled according to the one or more physical dimensions of the physicalspace and one or more physical dimensions of the second item.
 10. Themethod of claim 9, wherein receiving the indication further comprises:receiving one or more vectors that define a boundary of the physicalspace, a shape that encloses the physical space, or both, wherein thefirst composite image is scaled based at least in part on receiving theone or more vectors that define the boundary of the physical space, theshape that encloses the physical space, or both.
 11. The method of claim9, wherein receiving the indication further comprises: receiving, fromthe user device, a query for one or more items available at thenetworked marketplace.
 12. The method of claim 9, further comprising:generating the first composite image that overlays the first image ofthe first item within the image depicting the physical space based atleast in part on receiving the indication of at least the first itemavailable at the networked marketplace and the second item available atthe networked marketplace.
 13. The method of claim 12, whereingenerating the first composite image comprises: scaling the firstcomposite image according to the one or more physical dimensions of thephysical space and one or more physical dimensions of the first item.14. The method of claim 9, further comprising: receiving, from the userdevice, a first request to change one or more of a scale, a position, oran orientation of the first composite image; and adjusting one or moreof the scale, the position, or the orientation of the first compositeimage based at least in part on receiving the first request, whereintransmitting the first composite image is based at least in part onadjusting one or more of the scale, the position, and the orientation ofthe first composite image.
 15. The method of claim 9, furthercomprising: receiving, from the user device, a second request to changethe first image of the first item based at least in part on transmittingthe first composite image; changing the first image of the first itembased at least in part on receiving the second request; andtransmitting, to the user device, a third composite image that overlaysa third image of a third item within the image depicting the physicalspace based at least in part on changing the first image of the firstitem.
 16. The method of claim 15, wherein the second request comprises arequest to change a light source of the first image of the first item.17. A non-transitory computer-readable medium storing executableinstructions which, when executed by one or more processors of a server,cause the server to perform operations comprising: receiving an imagedepicting a physical space and an indication of one or more physicaldimensions of the physical space; receiving an indication of at least afirst item available from a networked marketplace and a second itemavailable from the networked marketplace, wherein the first item and thesecond item each have respective sizes comprising physical dimensionsthat are within a threshold of the one or more physical dimensions ofthe physical space; transmitting, to a user device, a first compositeimage that overlays a first image of the first item within the imagedepicting the physical space, wherein the first composite image isscaled according to the one or more physical dimensions of the physicalspace and one or more physical dimensions of the first item; andtransmitting, to the user device, a second composite image that overlaysa second image of the second item within the image depicting thephysical space, wherein the second composite image is scaled accordingto the one or more physical dimensions of the physical space and one ormore physical dimensions of the second item.
 18. The non-transitorycomputer-readable medium of claim 17, wherein the instructions toreceive the indication, when executed by the one or more processors,further cause the server to perform operations comprising: receiving oneor more vectors that define a boundary of the physical space, a shapethat encloses the physical space, or both, wherein the first compositeimage is scaled based at least in part on receiving the one or morevectors that define the boundary of the physical space, the shape thatencloses the physical space, or both.
 19. The non-transitorycomputer-readable medium of claim 17, wherein the instructions toreceive the indication, when executed by the one or more processors,further cause the server to perform operations comprising: receiving,from the user device, a query for one or more items available at thenetworked marketplace.
 20. The non-transitory computer-readable mediumof claim 17, wherein the instructions which, when executed by the one ormore processors, cause the server to perform operations comprising:generating the first composite image that overlays the first image ofthe first item within the image depicting the physical space based atleast in part on receiving the indication of at least the first itemavailable at the networked marketplace and the second item available atthe networked marketplace.